package com.zhentao.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 查询条件DTO
 * 根据业务流程需求设计，支持三种查询类型的通用查询条件1
 */
@Data
public class QueryConditionDto {
    
    /**
     * 查询类型：SUMMARY_QUERY-汇总查询, DATA_QUERY-数据查询, RAW_DATA_QUERY-原始数据查询
     */
    private String queryType;
    
    /**
     * 进出口类型：IMPORT-进口, EXPORT-出口
     */
    private String importExportType;
    
    /**
     * 结关开始日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private Date customsClearanceStartDate;
    
    /**
     * 结关结束日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private Date customsClearanceEndDate;
    
    /**
     * 关区代码
     */
    private String customsCode;
    
    /**
     * 分组维度列表（最多3个，仅汇总查询使用）
     * 支持用户手动定义为Level 1, Level 2, Level 3
     */
    private List<String> groupDimensions;
    
    /**
     * 输出字段列表
     * 汇总查询：显示处理表中的数值型字段 + 报关单数量 + 记录数量
     */
    private List<String> outputFields;
    
    /**
     * 筛选条件（JSON格式）
     * 支持列值参数，针对不同关区进行设置
     */
    private Map<String, Object> filterConditions;
    
    /**
     * 分页参数
     */
    private Integer pageNum = 1;
    
    /**
     * 分页大小
     */
    private Integer pageSize = 20;
    
    /**
     * 模板ID（如果使用模板查询）
     */
    private Long templateId;
    
    /**
     * 下钻路径（用于逐级下钻溯源）
     */
    private List<String> drillDownPath;
    
    /**
     * 导出类型：SUMMARY-汇总数据, DATA-数据查询结果, RAW_DATA-原始数据
     */
    private String exportType;
} 